package com.hw.job_2;

import java.io.File;
import java.io.IOException;

/*
* 实现将指定目录中的所有内容删除，包含子目录中的内容都要全部删除。
* */
public class jobTest {
    public static void main(String[] args) {

        try {
            createFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        boolean result = deleteAll("./dir_1");
        System.out.println("删除所有文件和目录" + (result ? "成功" : "失败"));
    }

    // 创建文件和目录
    public static void createFile() throws IOException {
        File dir_1 = new File("./dir_1");
        if (!dir_1.exists()) {
            System.out.println(dir_1.mkdir() ? "创建目录 dir_1 成功" : "创建目录 dir_1 失败");
        }

        File dir_2 = new File("./dir_1/dir_2");
        if (!dir_2.exists()) {
            System.out.println(dir_2.mkdir() ? "创建目录 dir_2 成功" : "创建目录 dir_2 失败");
        }

        File file_1 = new File("./dir_1/1.txt");
        if (!file_1.exists()) {
            System.out.println(file_1.createNewFile() ? "创建文件 1.txt 成功": "创建文件 1.txt 失败");
        }

        File file_2 = new File("./dir_1/dir_2/2.txt");
        if (!file_2.exists()) {
            System.out.println(file_2.createNewFile() ? "创建文件 2.txt 成功": "创建文件 2.txt 失败");
        }
    }

    // 删除目录下所有的文件
    public static boolean deleteAll(String dirName) {
        File dir = new File(dirName);
        if (dir.isDirectory()) {
            File[] fis = dir.listFiles();
            for (File fi: fis) {
                if (fi.isFile()) {
                    System.out.println("删除 " + fi.getName() + " 文件" + (fi.delete() ? "成功！" : "失败"));
                }
                if (fi.isDirectory()) {
                    String subDirName = fi.getAbsolutePath();
                    deleteAll(subDirName);
                }
            }
        }
        boolean res = dir.delete();
        System.out.println("删除 " + dir.getName() + " 文件" + (res ? "成功！" : "失败"));
        return res;
    }
}
